﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using KPWeb.Class;
using KPWeb.Data;
using KPWeb.Function;
using KPWeb.Reports;
using MSExcel = Microsoft.Office.Interop.Excel;
//using Microsoft.Reporting.WebForms;


namespace KPWeb.Moje
{

    public partial class WyjsciaOdpracowania : KPPage
    {
        private void komunikatError(int kod)//, int iT, int iID)
        {
            fError.Visible = true;
            switch (kod)
            {
                case -1: Error1.Visible = true;
                    break;
                case -2: Error2.Visible = true;
                    break;
                case -3: Error3.Visible = true;
                    break;
                case -4: Error4.Visible = true;
                    break;
                case -5: Error5.Visible = true;
                    break;
                default: fError.Visible = false;
                    break;
            }
        }
    

        protected void Page_Load(object sender, EventArgs e)
        {
            Error1.Visible = false;
            Error2.Visible = false;
            Error3.Visible = false;
            Error4.Visible = false;
            Error5.Visible = false;
            if (!IsPostBack)
            {
                    dTypWyjscia.Items.Clear();
                    dTypID.Items.Clear();
                    this.dTypWyjscia.Items.Add(new ListItem() { Text = Stale.wybierzTyp, Value = "0" });
                    this.dTypID.Items.Add(new ListItem() { Text = Stale.wszystkieTypy, Value = "0" });
                    foreach (vLex_TypDokumentu u in cMoje.GetListaTypWyjscia().Where(a=>a.GrupaDokumentow==1).OrderBy(a => a.NazwaDokumentu))
                    {
                        this.dTypWyjscia.Items.Add(new ListItem() { Text = u.NazwaDokumentu, Value = u.TypDokumentuID.ToString() });
                        this.dTypID.Items.Add(new ListItem() { Text = u.NazwaDokumentu, Value = u.TypDokumentuID.ToString() });
                    }
                    dTypID.SelectedValue = "0";
                    dTypWyjscia.SelectedValue = "0";
                    tDataOd.Text = String.Format("{0:yyyy-MM-dd}", DateTime.Now);
                    tDataDo.Text = String.Format("{0:yyyy-MM-dd}", DateTime.Now);
                                
                dYear.Items.Clear();
                foreach (short item in Kalendarz.GetYearGdzieWpisanoSwieta())
                {
                    this.dYear.Items.Add(item.ToString());
                }
                dYear.SelectedValue = DateTime.Now.Year.ToString();
               hOsobaID.Value = Current.OsobaID;
         }

        }
        protected int WyjscieOdpracowanieNadgodzinyUtworz()
        // 0 OK, -1 bład zapisu, -2 OD>=DO, -3 nie wybrano rodzaju, -4 pokrywają sie czasy
        {
            DateTime dOd=DateTime.Parse(tDataOd.Text);
            DateTime dDo=DateTime.Parse(tDataDo.Text);
            DateTime czasOd = new DateTime(dOd.Year, dOd.Month, dOd.Day, tOd.Hour, tOd.Minute, 00);
            DateTime czasDo = new DateTime(dDo.Year, dDo.Month, dDo.Day, tDo.Hour, tDo.Minute, 00);
            double czas = FunctionGlobal.TimeDifferenceInMinutes(czasDo,czasOd);
            if (czas <= 0)
            {
                Error2.Visible = true;
                return -2;
            }
            if (this.dTypWyjscia.SelectedValue == "0")
            {
                Error3.Visible = true;
                return -3;
            }
       
            int iT = cMoje.InsertWyjsciaOdpracowaniaNadgodziny(int.Parse(Current.OsobaID), byte.Parse(dTypWyjscia.SelectedValue),
                czasOd, czasDo, (dTypWyjscia.SelectedValue == "6" || dTypWyjscia.SelectedValue == "7") ? (DateTime?)czasDo : null, (int)Math.Round(czas), 0, null);


            if (iT == -4)
            {
                Error4.Visible = true;
                return -4;
            }
            if (iT == -1)
            {
                Error1.Visible = true;
                return -1;
            }
            return 0;
        }


        protected void ZapiszWyjscia_Click(object sender, System.EventArgs e)
        {
           int outProc = WyjscieOdpracowanieNadgodzinyUtworz();
           if (outProc < 0)
           {
               komunikatError(outProc);
               return;
           }
           this.ListView1.DataBind();
         }


  protected void btnDoKadrClick(object sender, EventArgs e)
  {

      int outProc = cMoje.UpdateWyjsciaStan(
                     int.Parse(((Button)sender).CommandArgument.ToString()), 0, 1);
      if (outProc < 0)
      {
          komunikatError(outProc);
          return;
      }
      this.ListView1.DataBind();
 
  }
 protected void btnDoZmienClick(object sender, EventArgs e)
  {
      DateTime dOd = DateTime.Parse(((Label)((Button)sender).Parent.FindControl("lOdData")).Text);
      DateTime dDo;
      if (DateTime.TryParse(((TextBox)((Button)sender).Parent.FindControl("tDoData")).Text,out dDo))
      {
          DateTime czasOd = new DateTime(dOd.Year, dOd.Month, dOd.Day, dOd.Hour, dOd.Minute, 00);
          DateTime czasDo = new DateTime(dDo.Year, dDo.Month, dDo.Day, dDo.Hour, dDo.Minute, 00);
          double czas = FunctionGlobal.TimeDifferenceInMinutes(czasDo, czasOd);
          if (czas < 0)
          {
              komunikatError(-2);
              return;
          }
          int outProc = cMoje.UpdateWyjsciaDo(
                         int.Parse(((Button)sender).CommandArgument.ToString()), dDo, (int)Math.Round(czas));
          if (outProc < 0)
          {
              komunikatError(outProc);
              return;
          }
          this.ListView1.DataBind();
      }
      else
      {
          komunikatError(-5);
          return;
      }
  }
       
  //protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
  //{
  //    //string sTemp = ((Label)e.Item.FindControl("Zastepstwo")).Text;

  //    //((Label)e.Item.FindControl("Zastepstwo")).Text = FunctionGlobal.UppercaseFirstWords(sTemp);
  //}


    }
}